package com.bridge.demo3;

/**现实生活中很多对象都是由多种元素组成，这些元素又会有多种变化，如果采用继承的方式将会产生很多种不同的类，使系统臃肿冗余。比如一个产品有两种元素组成，这两种元素分别有m种和n种种类，那么如果使用继承方式，将会有m*n种可能性。

     桥接模式将抽象和实现分离，使他们可以独立变化，使用组合关系替代继承，降低了多可变的情况。

     桥接模式主要包含以下几个结构：

抽象化角色：定义抽象类，包含一个对实现化对象的引用。

扩展抽象化：抽象化角色的子类，实现弗雷中的业务，并调用实现化对象的业务方法。

实现化角色：定义实现化角色的接口。

具体实现化：实现化角色的具体实现。

举例说明：女式背包有很多种种类，比如手提包，钱包等等，也有很多种颜色，使用桥接模式可以很方便的对这些属性进行组合。
 * @author zhangsulei
 *
 */
public class Test {

	public static void main(String[] args) {
		Bag handBag = new HandBag(new Red());
		handBag.say();
		Bag wallet = new Wallet(new Yellow());
		wallet.say();
		//i am handBag;my color is red
		//i am wallet;my color is yellow
	}

}
